package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 项目维护对象 pro_mainten
 *
 * @author ruoyi
 * @date 2024-09-30
 */
public class ProMainten extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 维护编号
     */
    private Long maintenId;

    /**
     * 项目编号
     */
    private Long projectId;

    /**
     * 项目名
     */
    @Excel(name = "项目名")
    private String projectName;

    /**
     * 项目发起人
     */
    @Excel(name = "项目发起人")
    private Long userId;

    /**
     * 预计开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "预计开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startTime;

    /**
     * 预计结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "预计结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endTime;

    /**
     * 预计结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "预计结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date expectedTime;

    /**
     * 正式结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "正式结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date formalTime;

    /**
     * 资金来源
     */
    @Excel(name = "资金来源")
    private String fundSoure;

    /**
     * 资金预算
     */
    @Excel(name = "资金预算")
    private BigDecimal budget;

    /**
     * 预计总成本
     */
    @Excel(name = "预计总成本")
    private BigDecimal totalCost;

    /**
     * 实际总成本
     */
    @Excel(name = "实际总成本")
    private BigDecimal realityCost;

    /**
     * 项目状态 0未启动 1建设中 2开发中 3实施中 4完成 9取消
     */
    @Excel(name = "项目状态 0未启动 1建设中 2开发中 3实施中 4完成 9取消")
    private Long status;

    /**
     * 项目合同和协议 - [通过文件方式保存]
     */
    @Excel(name = "项目合同和协议 - [通过文件方式保存]")
    private String contract;

    /**
     * 项目交付标准    - [通过文件方式保存]
     */
    @Excel(name = "项目交付标准    - [通过文件方式保存]")
    private String deliver;

    /**
     * 项目阶段 1 启动 2 计划 3 执行（3.1 开发 3.2 实施）  4 收尾
     */
    @Excel(name = "项目阶段 1 启动 2 计划 3 执行", readConverterExp = "3=.1,开=发,3=.2,实=施")
    private Long phase;

    /**
     * 客户名称
     */
    @Excel(name = "客户名称")
    private String customName;

    /**
     * 取消时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "取消时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date cancelTime;

    /**
     * 取消人员
     */
    @Excel(name = "取消人员")
    private String userName;

    public Long getMaintenId() {
        return maintenId;
    }

    public void setMaintenId(Long maintenId) {
        this.maintenId = maintenId;
    }

    public void setProjectId(Long projectId) {
        this.projectId = projectId;
    }

    public Long getProjectId() {
        return projectId;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public Long getUserId() {
        return userId;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setExpectedTime(Date expectedTime) {
        this.expectedTime = expectedTime;
    }

    public Date getExpectedTime() {
        return expectedTime;
    }

    public void setFormalTime(Date formalTime) {
        this.formalTime = formalTime;
    }

    public Date getFormalTime() {
        return formalTime;
    }

    public void setFundSoure(String fundSoure) {
        this.fundSoure = fundSoure;
    }

    public String getFundSoure() {
        return fundSoure;
    }

    public void setBudget(BigDecimal budget) {
        this.budget = budget;
    }

    public BigDecimal getBudget() {
        return budget;
    }

    public void setTotalCost(BigDecimal totalCost) {
        this.totalCost = totalCost;
    }

    public BigDecimal getTotalCost() {
        return totalCost;
    }

    public void setRealityCost(BigDecimal realityCost) {
        this.realityCost = realityCost;
    }

    public BigDecimal getRealityCost() {
        return realityCost;
    }

    public void setStatus(Long status) {
        this.status = status;
    }

    public Long getStatus() {
        return status;
    }

    public void setContract(String contract) {
        this.contract = contract;
    }

    public String getContract() {
        return contract;
    }

    public void setDeliver(String deliver) {
        this.deliver = deliver;
    }

    public String getDeliver() {
        return deliver;
    }

    public void setPhase(Long phase) {
        this.phase = phase;
    }

    public Long getPhase() {
        return phase;
    }

    public void setCustomName(String customName) {
        this.customName = customName;
    }

    public String getCustomName() {
        return customName;
    }

    public void setCancelTime(Date cancelTime) {
        this.cancelTime = cancelTime;
    }

    public Date getCancelTime() {
        return cancelTime;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserName() {
        return userName;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("maintenId", getMaintenId())
                .append("projectId", getProjectId())
                .append("projectName", getProjectName())
                .append("userId", getUserId())
                .append("startTime", getStartTime())
                .append("endTime", getEndTime())
                .append("expectedTime", getExpectedTime())
                .append("formalTime", getFormalTime())
                .append("fundSoure", getFundSoure())
                .append("budget", getBudget())
                .append("totalCost", getTotalCost())
                .append("realityCost", getRealityCost())
                .append("status", getStatus())
                .append("contract", getContract())
                .append("deliver", getDeliver())
                .append("phase", getPhase())
                .append("customName", getCustomName())
                .append("cancelTime", getCancelTime())
                .append("userName", getUserName())
                .toString();
    }
}
